]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
appDisplay: Move click action to dialog
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Thu, 4 Jun 2020 04:49:14 +0000 (01:49 -0300)
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Tue, 9 Jun 2020 19:01:08 +0000 (16:01 -0300)
Now that the folder dialog covers the whole primary
monitor, it eats all input events, and doesn't allow
the event blocker to detect clicks.

Move the click action to the folder dialog itself, and
popdown the dialog if a click is triggered on the dialog
(but not on any children).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1301

js/ui/appDisplay.js

index dad8fdc9253786230c3f1daf5ddcf8767926588d..4aff3b24bf1729ae22ba7b62efc6c7c8ba941c43 100644 (file)
@@ -387,18 +387,6 @@ class AppDisplay extends BaseAppView {
         this._swipeTracker.connect('update', this._swipeUpdate.bind(this));
         this._swipeTracker.connect('end', this._swipeEnd.bind(this));
 
-        this._clickAction = new Clutter.ClickAction();
-        this._clickAction.connect('clicked', () => {
-            if (!this._currentDialog)
-                return;
-
-            let [x, y] = this._clickAction.get_coords();
-            let actor = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y);
-            if (!this._currentDialog.contains(actor))
-                this._currentDialog.popdown();
-        });
-        this._eventBlocker.add_action(this._clickAction);
-
         this._currentDialog = null;
         this._displayingDialog = false;
         this._currentDialogDestroyId = 0;
@@ -1449,6 +1437,17 @@ var AppFolderDialog = GObject.registerClass({
             work_area: true,
         }));
 
+        const clickAction = new Clutter.ClickAction();
+        clickAction.connect('clicked', () => {
+            const [x, y] = clickAction.get_coords();
+            const actor =
+                global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y);
+
+            if (actor === this)
+                this.popdown();
+        });
+        this.add_action(clickAction);
+
         this._source = source;
         this._folder = folder;
         this._view = source.view;